package com.fyy.java8.functional;

import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;

/**
 * @Author fyy
 * @Description 函数式方法
 * java 4大核心函数式接口
 * 消费型接口： Consumer<T> void accept(T t)
 * 供给型接口： Supplier<T> T get()
 * 函数型接口： Supplier<T,R> R apply(T t)
 * 断定型接口： Predicate<T> boolean test(T t)
 * @Date 2021/2/22 14:10
 */
public class FunctionalTest {

    /** 消费性接口： Consumer<T> void accept(T t) */
    public static void consumer(){
        Consumer<String> test = (a) -> System.out.println(a + " test");
        test.accept("function");
    }

    /** 供给型接口： Supplier<T> T get() */
    public static void supplier(){
        Supplier<Integer> test = () -> 1;
        System.out.println("商品价格：" + test.get());
    }

    /** 函数型接口： Supplier<T,R> R apply(T t) */
    public static void function(){
        Function<Integer,Integer> test = (a) -> a > 20 ? 15 : 25;
        System.out.println("商品价格：" + test.apply(21));
    }

    /** 断定型接口： Predicate<T> boolean test(T t) */
    public static void predicate(){
        Predicate<Integer> test = (a)->a > 3;
        System.out.println("2>3:"+test.test(2));
    }

    public static void main(String[] args) {
        consumer();
        supplier();
        function();
        predicate();
    }

}
